fajlovi prikačeni uz rok.U arhivi se nalaze: XML schema (.xsd), XML dokument (.xml), XQuery upit ili XPath putanja (.xq), SQl dump baze (.sql), visio 2003 dijagram (.vsd) ukoliko postoje takvi fajlovi vezani za zadatke.
XML: za sve fajlove je
provereno da li su dobro oformljeni, a ako postoji i xml fajl i schema,
xml fajl je validiran u odnosu na odgovarajuću šemu. Za kreiranje
fajlova, proveru forme, validaciju, XPath i XQuery izraze korišćen je
XML editor EditX http://www.editix.com/
SQL: baza je
napravljena u MySQL-u pa prema tome SQL kod može imati netipičnu
sintaksu ili funkcije različite od onih u knjizi. Upiti su provereni,
prema mom shvatanju zadataka, koji često nisu baš lako shvatljivi.
Najlakše je preko MySQLyog-a uraditi "restore from SQL dump" da bi
mogli da probate upite nad podacima. Alati: MySQL http://www.mysql.com, MySQOyog www.webyog.com
Evrovizija (Izvodjač, ŠifraDržaveOcenjivača, BrojPoena, NazivPesme, NazivDržaveOcenjivača, ŠifraJezika, NazivJezika)
Izvodjač, ŠifraDržaveOcenjivača --> BrojPoena, NazivPesme, NazivDržaveOcenjivača, ŠifraJezika, NazivJezika
ŠifraDržaveOcenjivača --> NazivDržaveOcenjivača
Izvodjač --> NazivPesme, ŠifraJezika, NazivJezika
ŠifraJezika --> NazivJezika
u relaciji R atribut R.B (R.A i R.B mogu biti složeni) funkcionalno zavisi od atributa R.A (R.A funkcionalno određuje R.B) ako za svaku vrednost R.A postoji jedna i samo jedna vrednost R.B
atribut R.B potpuno funkcionalno zavisi od atributa R.A ako funkcionalno zavisi od atributa R.A ali ne i od nekog pravog podskupa atributa R.A
determinanta je bilo koji prost ili slozen atribut od koga neki drugi atribut u relaciji potpuno funkcionalno zavisi.
Izvodjač, ŠifraDržaveOcenjivača --> BrojPoena(D)(KK)
Izvodjač --> NazivPesme, ŠifraJezika, NazivJezika(D)
ŠifraDržaveOcenjivača --> NazivDržaveOcenjivača(D)
ŠifraJezika --> NazivJezika(D)
relacija se svodi na BCNF dekompozicijom kojom se iz relacije izvlače projekcije sa onim determinantama koje nisu kandidati za ključ
Pesma (Izvodjač, NazivPesme, ŠifraJezika)
Ocena (Izvodjač, ŠifraDržaveOcenjivača, BrojPoena)
DržavaOcenjivač (ŠifraDržaveOcenjivača, NazivDržaveOcenjivača)
Jezik (ŠifraJezika, NazivJezika)
u ovim relacijama sve determinante su kandidati za ključ tako da su relacije u Boyce-Codd normalnoj formi.
A (A1#, A2)
B (B1#, B2, A1#)
AB1 (B1#, A1#)
C (A1#,C1#, C2)
D (A1#, D1)
E (A1#, E1)
F (A1#, F1)
G (A1#, G1, A1#, G1)
H (A1#, A1#, A1#, G1, H1)
class A (extent As key A1#){
attribute string A1#;
attribute string A2;
relationship set<Bgtt; AB1 inverse B :: BA1;
relationship set<Bgtt; AB2 inverse B :: BA2;
};
class B (extent Bs key B1#){
attribute string B1#;
attribute string B2;
relationship A BA1 inverse A :: AB1;
relationship A BA2 inverse A :: AB2;
};
class D exdends A{
attribute string D1;
attribute set<Ggtt; Gs;
};
class G {
attribute string G1;
relationship G G1G2 inverse G :: G2G1;
relationship set<Ggtt; G2G1 inverse G :: G1G2;
relationship set<Hgtt; GH inverse H :: HG;
};
class H {
attribute string H1;
relationship C HC inverse C :: CH;
relationship F HF inverse F :: FH;
relationship G HG inverse G :: GH;
};
QBE je upitni jezik koji predstavlja implementaciju relacionog računa domena, preko specifične "dvodimenzione" sintakse, koja je vrlo bliska korisniku jer se preko nje direktno, u skeletu tabele predstavljene na ekranu, zadaje primer odgovora koji korisnik želi.
| naziv relacije | atributi |
| operacije nad celim n-torakama | oznake promenjivih, konstanti, uslova i operacija nad atributima |
uslovi koje treba da ispune atributi navode se u kolonama tog atrubuta. Ako su uslovi u istom redu, vezani su logičkim operatorom i (AND) a ako su u različitim redovima vezani su logičkim operatorm ili (OR).
Promenjiva u QBE je niz karkatera koji počinje sa _. Služi za spajanje tabela.
U ODMGu postoje dve vrste nasleđivanja: nasleđivanje ponašanja i nasleđivanje stanja.
Za nasleđivanje ponašanja se koristi veza nadtip-podtip (koja se ponekad naziva veza generalizacija-specijalizacija ili ISA veza)
na primer:
interface Osoba{
...
};
class Radnik : Osoba{
...
};
Za nasleđivanje stanja se uvodi veza extends. U ovoj vezi izmedju klasa, podređena klasa nasleđuje celokupno stanje i ponašanje klase koju proširuje. Klasa može naslediti samo jednu klasu extends nasleđivanjem.
na primer:
class Osoba {
...
};
class Radnik extends Osoba{
...
};
Transakcija je osnovna logička jedinica posla u obradi podataka (LUW - Logical Unit of Work). Transakcija mora da poseduje tzv "ACID" osobine.
A (Atomicity - Atomnost)
transakcija je skup aktivnosti koje se izvršavaju nad bazom po principu "sve ili ništa". Ili će se sve aktivnosti izvršiti ili ni jedna.
C (Consistency - Konzistentnost)
transakcija mora da prevede bazu iz jednog konzistentnog stanja u drugo konzistentno stanje.
I (Isolation - Izolacija)
transakcija ne bi trebalo da dozvoljava na uvid medjurezultate svog izvršenja drugim transakcijama
D (Durability - Trajnost)
promene koje izvrši jedna transakcija moraju biti stalne
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.w3.org/2001/XMLSchema
http://www.w3.org/2001/XMLSchema.xsd">
<xsd:element name="portfolio">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="stock">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="symbol" type="xsd:string"/>
<xsd:element name="price">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:double"gtt;
<xsd:attribute name="dt" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="share">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:integer">
<xsd:attribute name="dt" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="excange" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="nyse"/>
<xsd:enumeration value="nasdaq"/>
<xsd:enumeration value="amx"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
portfolio (potfolioID) stock (portfolioID, stockID, exchange, name, symbol, price, share)
for
$x in doc("portfolio.xml")/portfolio
where
$x/stock/name["zysmergy inc"]
return
$x
select LokacijaID from Lokacija join PopisnaLista using(LokacijaID) join StavkaPopisneListe using(ListaID) where TipLokacije = 'Administrativni objekti' and extract(year from DatumPopisa) = '2008' group by LokacijaID having sum(PopisanaKol) = 0
select LokacijaID, Lokacija.Naziv, AmortizacionaGrupa, sum(NabavnaVrednost) as UkupnaNabavnaVrednost, sum(OtpisanaVrednost) as UkupnaOtpisanaVrednost from Lokacija join PopisnaLista using(LokacijaID) join StavkaPopisneListe using(ListaID) join OsnovnoSredstvo using(InventarniBroj) group by LokacijaID, Lokacija.Naziv, AmortizacionaGrupa order by LokacijaID asc
select PredsednikKomisije, sum(NabavnaVrednost) as SumaNabavnihVrednosti, extract(year from DatumPopisa) as GodinaPopisa from PopisnaKomisija join PopisnaLista using(KomisijaID) join StavkaPopisneListe using(ListaID) join Lokacija using(LokacijaID) join OsnovnoSredstvo using(InventarniBroj) group by LokacijaID, GodinaPopisa,PredsednikKomisije having (SumaNabavnihVrednosti, GodinaPopisa) in (select max(unutrasnja.suma), unutrasnja.GodinaPopisa from (select sum(NabavnaVrednost) as suma, LokacijaID, extract(year from DatumPopisa) as GodinaPopisa from Lokacija join PopisnaLista using(LokacijaID) join StavkaPopisneListe using(ListaID) join OsnovnoSredstvo using(InventarniBroj) where extract(year from DatumPopisa) in (extract(year from current_date),extract(year from current_date)-1,extract(year from current_date)-2) group by LokacijaID, extract(year from DatumPopisa)) as unutrasnja group by unutrasnja.GodinaPopisa)